Spectre Attacks: Exploiting Speculative Execution

现代处理器使用转移预测和推测式执行来最大化性能。例如，如果分支的目标依赖于一个正在读取的内存中的值，CPU会尝试猜测目标地址并继续执行。当读出内存的值时，CPU丢弃或提交这个推测式的计算。推测式的逻辑可以访问受害者的内存和寄存器，可以进行产生可测量副作用的操作。

Spectre攻击让受害者推测式地执行在正确的程序执行过程中不会产生的操作，它们会通过侧信道泄露受害者的秘密信息给攻击者。这篇文章描述了实用的攻击，它结合了侧信道攻击，错误攻击（fault attack）和面向返回攻击（ROP）的方法，可以从受害者的进程中读取任意内存。这篇文章展示了推测式执行的实现破坏了支撑很多软件安全机制的安全假设，包括操作系统进程隔离，容器化，JIT编译，和对缓存计时和侧信道攻击的防御。这些攻击对真实系统有严重的威胁，因为有漏洞的推测式执行特性在广泛使用的Intel，AMD，ARM的处理器中被发现。

尽管特定处理器的防御在某些情形下可行，完整的解决方案需要修复处理器的设计，以及升级指令系统，让硬件工程师和软件开发者对CPU允许泄露什么计算状态有一个共识。
